package com.nuc.zyt.day04.io;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Properties;

/**
 * @ClassName InputFile
 * @Description TODO
 * @Author 耀酱
 * @Date 2023/5/28 12:33
 * @Version 1.0
 */

public class InputFile {
    public static void main(String[] args) {
        // java中可以通过多种方式加载配置文件

//        1. 使用 java.util.Properties 类
//        该类提供了一个 load(InputStream inStream) 方法，用于从 InputStream 对象中加载配置文件。
//        可以使用 Class.getResourceAsStream() 或 ClassLoader.getResourceAsStream() 方法获取配置文件的输入流。
        // 当我们使用 Properties 类的 load() 方法加载配置文件时，默认采用 ISO-8859-1 字符集编码。

        Properties properties = new Properties();
        try (InputStream inputStream = ClassLoader.getSystemResourceAsStream("config.properties")) {
            properties.load(inputStream);

            System.out.println(properties.getProperty("username"));
            System.out.println(properties.getProperty("password"));

        } catch (IOException e) {
            e.printStackTrace();
        }

        // 2. 使用 java.nio.file.Files 类
        Path path = Paths.get("config.properties");
        try {
            byte[] bytes = Files.readAllBytes(path);
            String content = new String(bytes, StandardCharsets.UTF_8);
            // 解析配置文件内容
            System.out.println(content);
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 3.使用 Spring 框架的 org.springframework.core.io.Resource 接口
        //Spring框架提供了一个 Resource 接口，它对资源进行了抽象，支持从各种来源
        // （如文件系统、类路径、URL、ServletContext等）加载资源，可以使用其相关实现类加载配置文件内容。

//        Resource resource = new ClassPathResource("config.properties");
//        try (InputStream inputStream = resource.getInputStream()) {
//            // 解析配置文件内容
//        } catch (IOException e) {
//            e.printStackTrace();
//        }



    }
}
